package com.ioc.business.order.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ioc.business.order.domain.PlanArrivalOrder;
import com.ioc.business.order.domain.bo.plan.arrival.GlobalCustomerSetBo;
import com.ioc.business.order.domain.bo.plan.arrival.PlanArrivalOrderBo;
import com.ioc.business.order.domain.bo.plan.arrival.PlanArrivalOrderQueryBo;
import com.ioc.business.order.vo.plan.arrival.PlanArrivalOrderImportVo;
import com.ioc.business.order.vo.plan.arrival.PlanArrivalOrderPageVo;
import com.ioc.business.order.vo.plan.arrival.PlanArrivalOrderVo;
import com.ioc.common.core.page.TableVo;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * 计划到货订单表 服务类
 * </p>
 *
 * @author WeiZhongRong
 * @since 2025-01-08
 */
public interface IPlanArrivalOrderService extends IService<PlanArrivalOrder> {
    /**
     * 分页查询计划到货订单列表
     *
     * @param queryBo
     * @return
     */
    TableVo<PlanArrivalOrder, PlanArrivalOrderPageVo> selectPlanArrivalOrderPageList(PlanArrivalOrderQueryBo queryBo);


    /**
     * 查询计划到货订单详情信息
     *
     * @param planArrivalOrderId
     * @return
     */

    PlanArrivalOrderVo selectPlanArrivalOrderById(Long planArrivalOrderId);

    /**
     * 新增计划到货订单
     *
     * @param bo
     * @return
     */
    boolean addPlanArrivalOrder(PlanArrivalOrderBo bo);

    /**
     * 编辑计划到货订单
     *
     * @param bo
     * @return
     */
    boolean updatePlanArrivalOrder(PlanArrivalOrderBo bo);

    /**
     * 删除计划到货订单
     *
     * @param idList
     * @return
     */
    boolean removePlanArrivalOrder(List<Long> idList);

    /**
     * 导入发货订单数据
     *
     * @param voList
     */
    void importPlanArrivalOrder(List<PlanArrivalOrderImportVo> voList);

    /**
     * 计划到货订单客户信息设置
     *
     * @param bo
     * @return
     */
    boolean setCustomerInfo(GlobalCustomerSetBo bo);

    /**
     * 检查日期是否存在
     *
     * @param planArrivalOrderId
     * @param arrivalOrderDate
     * @return
     */
    boolean checkArrivalOrderDate(Long planArrivalOrderId, Date arrivalOrderDate);

    /**
     * 根据日期查询客户名称选项列表
     *
     * @param date
     * @return
     */
    List<String> getCustomerNameOptions(String date);
}
